﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.estadistica;
using com.clinica.business.BE.gesliq; 
using LiclUtil;
using LiclEstadistica.Views;
using System.Text;

namespace wesiGestClinica.estadistica
{
    public partial class FormsCiaSeguros : Shared.SMGPaseBase, ILiclCiaSeguros
    {
        private LiclCiaSegurosPresenter oPresenter = new LiclCiaSegurosPresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                this.Master.TituloModulo = "Reporte de Liquidación por Compañias de Seguro";
                CargarRangoTiempo();
                CargarTipoPresentacion();
                IniciarControles();
            }
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            btn_Generar.Click += new EventHandler(btn_Generar_Click);
            rbu_RangoTiempos.SelectedIndexChanged += new EventHandler(rbu_RangoTiempos_SelectedIndexChanged);
            btn_Imprimir.Attributes.Add("onClick", "Imprimir();");
        }        

        #region Eventos
        void btn_Generar_Click(object sender, EventArgs e)
        {
            CiaSegurosBE oCia = new CiaSegurosBE();
            if (rbu_RangoPresentacion.SelectedValue == "1")
                oCia.Tipo = 1;
            else if (rbu_RangoPresentacion.SelectedValue == "2")
                oCia.Tipo = 2;
            else
                oCia.Tipo = 1;
            oCia.FechaInicio = DateTime.Parse(UCFecDesde.Texto.Trim());
            oCia.FechaFin =DateTime.Parse(UCFecHasta.Texto.Trim());
            oCia.CantidadMes = rbu_RangoTiempos.SelectedValue;
            oPresenter.onObterner_Reporte(oCia);
        }
        void rbu_RangoTiempos_SelectedIndexChanged(object sender, EventArgs e)
        {
            DateTime fechaHasta = new DateTime();
            DateTime fechaDesde = new DateTime();
            dg_resultado01.DataSource =  new List<CiaSegurosBE>();
            dg_resultado01.DataBind();
            switch (rbu_RangoTiempos.SelectedValue)
            {
                case "12":
                    fechaDesde = DateTime.Now.AddMonths(-11);
                    fechaHasta = DateTime.Today.ToUniversalTime();                   
                    break;
                case "9":
                    fechaDesde = DateTime.Now.AddMonths(-8);
                    fechaHasta = DateTime.Today.ToUniversalTime();
                    break;
                case "3":
                    fechaDesde = DateTime.Now.AddMonths(-2);
                    fechaHasta = DateTime.Today.ToUniversalTime();
                    break;
                case "1":
                    fechaDesde = DateTime.Now.AddDays(-30);
                    fechaHasta = DateTime.Today.ToUniversalTime();
                    break;
                default:
                    break;
            }
            UCFecDesde.Texto = fechaDesde.ToString("dd/MM/yyyy");
            UCFecHasta.Texto = fechaHasta.ToString("dd/MM/yyyy");
        }
        #endregion
        #region Metodos
        private void CargarRangoTiempo()
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            ParametrosBE oParm = new ParametrosBE();
            oParm.NombreTabla = "RANTIE";
            oPresenter.onObterner_Tabla(oParm,1);
        }
        private void CargarTipoPresentacion()
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            ParametrosBE oParm = new ParametrosBE();
            oParm.NombreTabla = "PRESREP";
            oPresenter.onObterner_Tabla(oParm,2);
        }
        private void IniciarControles()
        {
            DateTime fechaHasta = new DateTime();
            DateTime fechaDesde = new DateTime();

            rbu_RangoPresentacion.Items[0].Selected = true;
            rbu_RangoTiempos.Items[0].Selected = true;            
            fechaDesde = DateTime.Now.AddDays(-30);
            fechaHasta = DateTime.Today.ToUniversalTime();
            UCFecDesde.Texto = fechaDesde.ToString("dd/MM/yyyy");
            UCFecHasta.Texto = fechaHasta.ToString("dd/MM/yyyy");
        }
        private void DeterminarGrilla()
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            for (int i = 0; i < 13; i++)
            {
                 dg_resultado01.Columns[i].Visible = true;
            }
            if (rbu_RangoPresentacion.SelectedValue == "1")
            {
                lbl_TituloResultado.Text = string.Empty;
                dg_resultado01.Columns[1].HeaderText = "Monto Liquidado";
                dg_resultado01.Columns[2].HeaderText = "Porcentaje";

                for (int i = 3; i < 13; i++)
                {
                    dg_resultado01.Columns[i].Visible = false;
                }
            }
            else if (rbu_RangoPresentacion.SelectedValue == "2")
            {
                lbl_TituloResultado.Text = "Resultado en Meses";
                int intX = 0;
                switch (rbu_RangoTiempos.SelectedValue)
                {
                    case "12":
                        for (int i = 1; i < 13; i++)
                        {
                            dg_resultado01.Columns[i].HeaderText = DateTime.Now.AddMonths(-intX).Month.ToString();
                            dg_resultado01.Columns[i].HeaderText = ObtenerMes(DateTime.Now.AddMonths(-intX).Month) + " " + DateTime.Now.AddMonths(-intX).Year.ToString();
                            intX++;
                        }
                        break;
                    case "9":
                        for (int i = 1; i < 10; i++)
                        {
                            dg_resultado01.Columns[i].HeaderText = DateTime.Now.AddMonths(-intX).Month.ToString();
                            dg_resultado01.Columns[i].HeaderText = ObtenerMes(DateTime.Now.AddMonths(-intX).Month) + " " + DateTime.Now.AddMonths(-intX).Year.ToString();
                            intX++;
                        }
                        dg_resultado01.Columns[10].Visible = false;
                        dg_resultado01.Columns[12].Visible = false;
                        dg_resultado01.Columns[11].Visible = false;
                        break;
                    case "3":
                        for (int i = 1; i < 4; i++)
                        {
                            //dg_resultado01.Columns[i].HeaderText = DateTime.Now.AddMonths(-intX).Month.ToString();
                            dg_resultado01.Columns[i].HeaderText = ObtenerMes(DateTime.Now.AddMonths(-intX).Month) + " " + DateTime.Now.AddMonths(-intX).Year.ToString(); 
                            intX++;
                        }
                        for (int i = 4; i < 13; i++)
                        {
                            dg_resultado01.Columns[i].Visible = false;
                        }
                        break;
                    case "1":
                        dg_resultado01.Columns[1].HeaderText = DateTime.Now.AddMonths(-intX).Month.ToString();
                        dg_resultado01.Columns[1].HeaderText = ObtenerMes(DateTime.Now.AddMonths(-intX).Month) + " " + DateTime.Now.AddMonths(-intX).Year.ToString();
                        for (int i = 2; i < 13; i++)
                        {
                            dg_resultado01.Columns[i].Visible = false;
                        }
                        break;
                    default:
                        break;
                }
            }
        }
        #endregion




        #region ILiclCiaSeguros Members

        public void ObtenerReporte(List<CiaSegurosBE> lst)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            DeterminarGrilla();
            //dg_resultado01.DataSource = lst;
            //dg_resultado01.DataBind();
            CiaSegurosBE obj = new CiaSegurosBE();
            foreach (CiaSegurosBE item in lst)
            {                
                obj.Resultado_01 = obj.Resultado_01 + item.Resultado_01;
                obj.Resultado_02 = obj.Resultado_02 + item.Resultado_02;
                obj.Resultado_03 = obj.Resultado_03 + item.Resultado_03;
                obj.Resultado_04 = obj.Resultado_04 + item.Resultado_04;
                obj.Resultado_05 = obj.Resultado_05 + item.Resultado_05;
                obj.Resultado_06 = obj.Resultado_06 + item.Resultado_06;
                obj.Resultado_07 = obj.Resultado_07 + item.Resultado_07;
                obj.Resultado_08 = obj.Resultado_08 + item.Resultado_08;
                obj.Resultado_09 = obj.Resultado_09 + item.Resultado_09;
                obj.Resultado_10 = obj.Resultado_10 + item.Resultado_10;
                obj.Resultado_11 = obj.Resultado_11 + item.Resultado_11;
                obj.Resultado_12 = obj.Resultado_12 + item.Resultado_12;
            }
            obj.CiaSeguros = "Total";
            lst.Add(obj) ;
            dg_resultado01.DataSource = lst;
            dg_resultado01.DataBind();
        }

        public void ObtenerTabla(List<ParametrosBE> lst, int tipo)
        {
            switch (tipo)
            {
                case 1:
                    rbu_RangoTiempos.DataSource = lst;
                    rbu_RangoTiempos.DataValueField = "Codigo";
                    rbu_RangoTiempos.DataTextField = "DescripcionCorta";
                    rbu_RangoTiempos.DataBind();
                    break;
                case 2:
                    rbu_RangoPresentacion.DataSource = lst;
                    rbu_RangoPresentacion.DataValueField = "Codigo";
                    rbu_RangoPresentacion.DataTextField = "DescripcionCorta";
                    rbu_RangoPresentacion.DataBind();
                    break;
                default:
                    break;
            }
        }
        public string ObtenerMes(int nMes)
        {
            string sMes;
            switch (nMes)
            {
                case 1:
                    sMes = "ENE";
                    break;
                case 2:
                    sMes = "FEB";
                    break;
                case 3:
                    sMes = "MAR";
                    break;
                case 4:
                    sMes = "ABR";
                    break;
                case 5:
                    sMes = "MAY";
                    break;
                case 6:
                    sMes = "JUN";
                    break;
                case 7:
                    sMes = "JUL";
                    break;
                case 8:
                    sMes = "AGO";
                    break;
                case 9:
                    sMes = "SET";
                    break;
                case 10:
                    sMes = "OCT";
                    break;
                case 11:
                    sMes = "NOV";
                    break;
                case 12:
                    sMes = "DIC";
                    break;

                default:
                    sMes = "";
                    break;
            }
            return (sMes);
        }
        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje, TipoMensaje.Error);
        }

        #endregion

  

        #region ILiclCiaSeguros Members


        public void ObtenerReporteLiq(List<LiquidacionBE> lst)
        {
            
        }

        #endregion

        #region ILiclCiaSeguros Members


        public void ObtenerReporteDocPago(List<com.clinica.business.BE.actdocpago.DocumentoPagoBE> lst)
        {
          
        }

        #endregion

    }
}
